Telegram Group Search
Что выведет следующий код на C#?


using System;

class Program {
static void Main() {
int a = 1000;
int b = 1000;

object x = a;
object y = b;

Console.WriteLine(x == y); // #1
Console.WriteLine(x.Equals(y)); // #2
}
}


🔢 Варианты ответа:

A)

True


B)

False


C)

True


D)

False


Правильный ответ: C

💡 Почему?

-
x и y — boxed значения типа int, то есть ссылки на два разных объекта в куче.
-
x == y сравнивает ссылки, а не значения → False.
-
x.Equals(y) вызывает метод Equals для int, который сравнивает значения → True.

📌 Подвох — в различии
== и .Equals() при использовании упакованных типов.

@csharp_ci
🖥 TinyHelpers — это библиотека, разработанная Марко Минервой, которая содержит коллекцию часто используемых вспомогательных методов и классов для .NET! Цель проекта — избежать дублирования кода, предоставляя разработчикам готовые решения для повседневных задач.

🔐 Лицензия: MIT

🖥 Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Wexflow — это мощная платформа для автоматизации рабочих процессов с открытым исходным кодом. Она позволяет автоматизировать задачи, такие как обработка файлов, отправка уведомлений, резервное копирование, интеграция с различными API и многое другое

🌟 Wexflow обладает рядом функций, включая интеграцию с базами данных и облачными сервисами, поддержку различных форматов данных и протоколов, а также собственным приложением для Android!

🔐 Лицензия: MIT

🖥 Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Задача. Что выведет на консоль этот пример на C#?


using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
var funcs = new List<Func<int>>();

// Первая группа лямбд
for (int i = 0; i < 4; i++)
{
funcs.Add(() => i * i);
}

Console.Write("Squares: ");
foreach (var f in funcs)
Console.Write(f() + " ");

Console.WriteLine();

// Вторая группа лямбд с копией переменной
funcs.Clear();
for (int i = 0; i < 4; i++)
{
int j = i;
funcs.Add(() => j * j);
}

Console.Write("SquaresWithCopy: ");
foreach (var f in funcs)
Console.Write(f() + " ");
}
}

Ответ:
Squares: 16 16 16 16
SquaresWithCopy: 0 1 4 9

Объяснение
Первая группа лямбд
Лямбды захватывают переменную i по ссылке. К моменту, когда мы их вызываем в foreach, цикл уже завершился, поэтому i == 4. Каждая лямбда вычисляет 4 * 4 → 16.

Вторая группа лямбд
Внутри цикла для каждого значения i создаётся новая локальная переменная j, и лямбда захватывает именно её. При первой итерации j = 0, при второй j = 1 и т. д. Поэтому j * j даёт 0, 1, 4, 9 соответственно.

Такой приём (захват локальной копии переменной) позволяет избежать «одинообразного» результата и сохранить значение каждой итерации.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Python: www.tg-me.com/pythonl
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
Нерйросети www.tg-me.com/ai_machinelearning_big_data
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/DevopsDocker
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/DevOPSitsec
Data Science: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/C C Sharp programming/com.csharp_ci
Java: www.tg-me.com/javatg
Базы данных: www.tg-me.com/sqlhub
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
ИИ: www.tg-me.com/vistehno
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
Разработка игр: https://www.tg-me.com/gamedev
Haskell: www.tg-me.com/haskell_tg
Физика: www.tg-me.com/fizmat

💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy
🚀 Silk.NET 3.0: грядущая революция в .NET-графике

Сообщество Silk.NET анонсировало работу над третьей версией своего фреймворка — амбициозным переосмыслением того, как должны работать низкоуровневые .NET-биндинги для графики и мультимедиа.

Особенность проекта всегда заключалась в кроссплатформенности и минимальных накладных расходах при работе с GPU. В 3.0 разработчики обещают переработанную систему биндингов и улучшенную интеграцию с современными .NET-стэками.

🤖 GitHub

@csharp_ci
🚀 SuperSocket высокопроизводительный фреймворк для сетевых приложений на .NET. В отличие от стандартных решений, он предлагает готовую инфраструктуру для работы с TCP, UDP и WebSocket, скрывая сложности низкоуровневых операций за простым API.

Проект имеет модульную архитектуру с поддержкой middleware и встроенной системой команд, что позволяет легко адаптировать его для разных сценариев. Интеграция с DI-контейнером .NET и кроссплатформенность делают данный инструмент универсальным выбором для современных приложений.

🤖 GitHub

@csharp_ci
🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux.

Наглядные картинки и короткие видео - мы расскажем о всех секртетах Linux администрирования.

Стоит подписаться: www.tg-me.com/linuxacademiya
Please open Telegram to view this post
VIEW IN TELEGRAM
👾 BotSharp — фреймворк для AI-ассистентов на .NET. Этот open-source фреймворк объединяет чат-ботов, RAG-системы и мультиагентные сценарии в единую платформу с модульной архитектурой.

Особенность инструмента в его ориентации на корпоративные задачи: от интеграции с мессенджерами до работы с базами данных. Проект поддерживалось ChatGPT, Gemini, Claude и других LLM через единый интерфейс, встроенный UI на SvelteKit и инструменты для оценки работы моделей.

🤖 GitHub

@csharp_ci
🖥 PowerShell-скрипт для переименования .NET-проекта

Переименование .NET-проекта — занятие утомительное:
нужно переименовать папки, файлы, неэмспейсы, а также заменить строки внутри .sln и .csproj файлов.

Перед вами PowerShell-скрипт, который автоматизируетпеерименование: он рекурсивно переименовывает папки и файлы и заменяет содержимое внутри:


$ErrorActionPreference = "Stop"

$rootFolder = Resolve-Path -Path "."
$oldName = "Sample.Foo"
$newName = "Sample.Bar"

# Rename files and folders
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse | Sort-Object -Property FullName -Descending) {
$itemNewName = $item.Name.Replace($oldName, $newName)
if ($item.Name -ne $itemNewName) {
Rename-Item -LiteralPath $item.FullName -NewName $itemNewName
}
}

# Replace content in files
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse -Include "*.cmd", "*.cs", "*.csproj", "*.json", "*.md", "*.proj", "*.props", "*.ps1", "*.sln", "*.slnx", "*.targets", "*.txt", "*.vb", "*.vbproj", "*.xaml", "*.xml", "*.xproj", "*.yml", "*.yaml") {
$content = Get-Content -LiteralPath $item.FullName
if ($content) {
$newContent = $content.Replace($oldName, $newName)
Set-Content -LiteralPath $item.FullName -Value $newContent
}
}


@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Задача: Что выведет этот код на C\#?


using System;
using System.Threading.Tasks;

class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("1");
var task = FooAsync();
Console.WriteLine("2");
await task;
Console.WriteLine("5");
}

static async Task FooAsync()
{
Console.WriteLine("3");
await Task.Delay(100);
Console.WriteLine("4");
}
}


Вопрос:
Какой порядок чисел появится в консоли?

👇 Подумай, прежде чем смотреть ответ.



Разбор:

1. Console.WriteLine("1"); → печатает 1

2. var task = FooAsync(); → вызывается FooAsync(), который:

печатает 3

доходит до await Task.Delay(100); и возвращает управление в Main (не дожидаясь задержки)

3. Console.WriteLine("2"); → печатает 2

4. await task; → теперь Main ждёт завершения FooAsync

5. после 100ms продолжает выполнение в FooAsync → печатает 4

6. возвращаемся в Main → печатает 5



🎉 Окончательный вывод:

1
3
2
4
5

📝 Что проверяет задача:

- Понимание работы async/await

- Как работают точки приостановки (suspension points)

- Когда код возвращается в вызывающий метод

#CSharp #AsyncAwait #InterviewQuestion #CodeChallenge

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/05/31 14:50:24
Back to Top
HTML Embed Code: